[100分求助]一元多项式加法能实现,减法实现不了,帮忙修改

来源:百度知道 编辑:UC知道 时间:2024/06/28 16:16:28
#include <iostream>
using namespace std;
typedef struct LNode
{int coef; //多项式系数
int expn; //多项式指数
struct LNode *next;
}LNode,*linklist;
//---------创建带头结点的多项式链表--------
linklist creat()
{ linklist head,s,p,pre;
int coef;
int expn;
head=new LNode; //表头结点
head->next=NULL;
cout<<"输入系数:"<<endl;
cin>>coef;
cout<<"输入指数:"<<endl;
cin>>expn;
while (coef!=0)
{
cout<<"当系数等于零的时候结束!"<<endl;
s=new LNode; //生成新结点
s->coef=coef;
s->expn=expn;
s->next=NULL;
pre=head; //插入到有序的多项式链表中去
p=head->next;
while (p!=NULL && p->expn >s->expn)
{
pre=p;
p=p->next;//pre 和p分别后移
}
s->next=p;
pre->next=s;//s插入到pre与p之间,生成降序。
cout<<"读下一项"<<endl;
cout<<"输入系数:

linklist qufu()//取负函数
{linklist t;
while(t)
{t->coef=-t->coef;
t=t->next;
}
return t;
}

这个函数有用么 - -
改为:
void qufu(linklist t)//取负函数
{
while (t && (t=t->next))
{
t->coef = -t->coef;
}
}
另外add函数有问题,调用过后a为add后的结果,而b被delete掉了
所以你create之后只能做一次add。要想add不会改变多项式的值的话,应该在add里面重新创建一个链表。